﻿Imports EVOLTA.Promocion.Bl.Bc
Imports EVOLTA.Promocion.Bl.Be
Imports EVOLTA.Promocion.Bl.Ctrl
Imports System.IO

Partial Class Atencion_al_Cliente_AtencionCliente
    Inherits System.Web.UI.Page
    Implements System.Web.UI.ICallbackEventHandler

    Private atencionClientes As List(Of Ecliente) = Nothing
    Private cobranzas As List(Of EseparacionVenta) = Nothing
    Private cobranzaDetalle As List(Of EseparacionVentaDetallePagos) = Nothing
    Private distribuirs As New List(Of EseparacionVentaDetallePagos)
    Private jsMensaje As String = Nothing

#Region "           Formulario                              "
    Public Property sCliente() As List(Of Ecliente)
        Get
            If Session("atencionClientes") Is Nothing Then
                Return Nothing
            Else
                Return Session("atencionClientes")
            End If
        End Get
        Set(ByVal value As List(Of Ecliente))
            Session("atencionClientes") = value
        End Set
    End Property
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.CacheControl = "no-cache"
        Response.AddHeader("Pragma", "no-cache")
        Response.Expires = -1
        '***********************************************************'
        If Not IsPostBack Then
            divddlVendedor()
            divddlMoneda()
            divddlFormaPago()
            divddlEntidadFin()
            divddlEstadoMonto()
        End If
        AddHandler egvInmuebles.RowCreated, AddressOf egvInmuebles_RowCreated
        Dim str As New StringBuilder
        str.Append("function mostrarPopup(pop){")
        str.Append("    incializarPantallaPago();")
        str.Append("    $find(pop).show();")
        str.Append("    return true;")
        str.Append("    }")
        str.Append("function ocultarPopup(pop){")
        str.Append("    showDivResultadoSeleccio();")
        str.Append("    $find(pop).hide();")
        str.Append("    return true;")
        str.Append("    }")
        ClientScript.RegisterClientScriptBlock(Me.GetType(), "mostrar", str.ToString, True)
        btnCancelar.Attributes.Add("onclick", "ocultarPopup('" + mpPagos.ClientID + "'); return false;")
        '***********************************************************'
        If Not IsPostBack Then
            selEntidadFin.Attributes.Add("onchange", "if (this.options[this.selectedIndex].value == '00') {document.getElementById('ctl00$ContentPlaceHolder1$selNroCuenta').length=1;} else {CallTheServer('divddlNroCta@' + this.options[this.selectedIndex].value);};return false;")
        End If
        Dim cbReference As String
        cbReference = Page.ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData", "null", True)
        Dim callbackScript As String = ""
        callbackScript &= "function CallTheServer(arg)" & _
                          "{" & cbReference & "; }"

        Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "CallTheServer", callbackScript, True)
    End Sub
    Private Sub divddlVendedor()
        Me.selVendedor.DataSource = Rvendedor.SeleccionarXEstado(Me.Master.descEmpresa, True)
        Me.selVendedor.DataTextField = "NombresCompletos"
        Me.selVendedor.DataValueField = "idVendedor"
        Me.selVendedor.DataBind()
    End Sub
    Private Sub divddlMoneda()
        Me.selTpoMoneda.DataSource = Rmoneda.SeleccionarTodo(Me.Master.descEmpresa, True)
        Me.selTpoMoneda.DataTextField = "descMoneda"
        Me.selTpoMoneda.DataValueField = "idMoneda"
        Me.selTpoMoneda.DataBind()
    End Sub
    Private Sub divddlFormaPago()
        Me.selFormaPago.DataSource = RformaPago.SeleccionarXEstado(Me.Master.descEmpresa, True)
        Me.selFormaPago.DataTextField = "descFormaPago"
        Me.selFormaPago.DataValueField = "idFormaPago"
        Me.selFormaPago.DataBind()
    End Sub
    Private Sub divddlEntidadFin()
        Me.selEntidadFin.DataSource = RentFinanciera.SeleccionarXEstado(Me.Master.descEmpresa, True, Me.Master.idProyecto)
        Me.selEntidadFin.DataTextField = "descEntidadFin"
        Me.selEntidadFin.DataValueField = "idEntidadFin"
        Me.selEntidadFin.DataBind()
    End Sub
    Private Sub divddlEstadoMonto()
        Dim Eestado As New Ecommons
        Me.ddlEstadoCuotaDetalle.DataSource = Eestado.estadoMonto
        Me.ddlEstadoCuotaDetalle.DataTextField = "descripcion"
        Me.ddlEstadoCuotaDetalle.DataValueField = "codigo"
        Me.ddlEstadoCuotaDetalle.DataBind()
    End Sub
    Private Function obtenerEdit(ByVal pLClientes As System.Linq.IOrderedEnumerable(Of Ecliente)) As String
        Dim datos As New StringBuilder
        datos.Append(pLClientes.ElementAt(0).idCliente.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).EtpoDcmto.descTpoDcmto.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).nroDocumento.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).NombresCompletos.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).direccion.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).telefonoFijo.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).email.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).Eubigeo.descDepartamento.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).Eubigeo.descProvincia.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).Eubigeo.descDistrito.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).razonSocialLaboral.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).telefonoLaboral.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).telefonoCelular.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).puesto.Trim + "|")
        datos.Append(cargarPagos(pLClientes.ElementAt(0).nroDocumento.Trim) + "|")
        Return datos.ToString()
    End Function
    Private Function cargarPagos(ByVal nroDocumento As String) As String
        Dim sr As New System.IO.StringWriter()
        Dim htm As New HtmlTextWriter(sr)

        Dim separacionVenta As New EseparacionVenta
        With separacionVenta
            .idProyecto = Me.Master.idProyecto
            .idEtapa = Me.Master.idEtapa
            .nroDocumento = nroDocumento
        End With


        Session("cobranza") = cobranzas

        cobranzas = RseparacionVenta.SeleccionarXCobranza(Me.Master.descEmpresa, separacionVenta)
        Session("cobranza") = cobranzas

        cobranzaDetalle = RseparacionVentaDetallePagos.SeleccionarXCobranza(Me.Master.descEmpresa, separacionVenta)
        Session("cobranzaDetalle") = cobranzaDetalle
        egvInmuebles.DataSource = cobranzas
        egvInmuebles.DataBind()
        egvInmuebles.RenderControl(htm)
        htm.Flush()

        Return sr.ToString()
    End Function
    Protected Sub gvwCliente_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles gvwCliente.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
#End Region

#Region "           Pagos                                   "
    Protected Sub egvInmuebles_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            Dim strUidSeparacion As String = DataBinder.Eval(e.Row.DataItem, "idSeparacionVenta").ToString()
            Dim egvEstPagoInmueble As GridView = CType(e.Row.FindControl("egvEstPagoInmueble"), GridView)
            If egvEstPagoInmueble IsNot Nothing Then
                AddHandler egvEstPagoInmueble.RowCreated, AddressOf egvEstPagoInmueble_RowCreated
            End If
            If strUidSeparacion.Length > 0 Then
                cobranzaDetalle = Session("cobranzaDetalle")
                Dim LcobranzaDetalles = From pd In cobranzaDetalle _
                                        Where pd.idSeparacionVenta = CType(strUidSeparacion, Int32) _
                                        Order By pd.idEstadoPago Ascending _
                                        Select pd.idSeparacionVenta, pd.idEstadoPago, pd.descEstadoPago Distinct
                If cobranzaDetalle.Count > 0 Then
                    egvEstPagoInmueble.DataSource = LcobranzaDetalles
                    Dim objFila As ExGridView.ExtGridViewRow = CType(e.Row, ExGridView.ExtGridViewRow)
                    objFila.ShowExpand = True
                End If
            End If
        End If
    End Sub
    Protected Sub egvEstPagoInmueble_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            Dim egvEstPagoDetalle As ExGridView.ExtGridView = CType(e.Row.FindControl("egvPagoDetalle"), ExGridView.ExtGridView)
            If egvEstPagoDetalle IsNot Nothing Then
                AddHandler egvEstPagoDetalle.RowCreated, AddressOf egvPagoDetalle_RowCreated
            End If
            Dim strUidSeparacion As String = DataBinder.Eval(e.Row.DataItem, "idSeparacionVenta").ToString()
            Dim strUidEstadoPago As String = DataBinder.Eval(e.Row.DataItem, "idEstadoPago").ToString()
            If strUidSeparacion.Length > 0 Then
                cobranzaDetalle = Session("cobranzaDetalle")
                Dim LcobranzaDetalles = From pd In cobranzaDetalle _
                                        Where pd.idSeparacionVenta = CType(strUidSeparacion, Int32) AndAlso _
                                              pd.idEstadoPago = CType(strUidEstadoPago, Int32) _
                                        Order By pd.idMotivo, pd.correlativo _
                                        Select pd
                If cobranzaDetalle.Count > 0 Then
                    egvEstPagoDetalle.DataSource = LcobranzaDetalles
                    Dim objFila As ExGridView.ExtGridViewRow = CType(e.Row, ExGridView.ExtGridViewRow)
                    objFila.ShowExpand = True
                End If
            End If
        End If
    End Sub
    Protected Sub egvPagoDetalle_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
        End If
    End Sub
    Private Function cargarCtaCorriente(ByVal idEntidadFin As Int32) As String
        Dim sr As New System.IO.StringWriter()
        Dim htm As New HtmlTextWriter(sr)
        selNroCuenta.DataSource = RctaCorriente.SeleccionarTodo(Me.Master.descEmpresa, True, idEntidadFin)
        selNroCuenta.DataTextField = "nroCuenta"
        selNroCuenta.DataValueField = "idCuenta"
        selNroCuenta.DataBind()
        selNroCuenta.RenderControl(htm)
        htm.Flush()
        Return sr.ToString()
    End Function
    Protected Function estadoDownload(ByVal dato As String) As Boolean
        If dato.Trim.Length > 0 Then
            Return True
        Else
            Return False
        End If
    End Function
    Protected Function rutaScanner(ByVal idMotivo As String, ByVal archivo As String) As String
        Return String.Format("~/cobranza/evoltaDownload.aspx?idMotivo={0}&filename={1}", idMotivo, archivo)
    End Function
    Protected Function CargarDistribuirs(ByVal pIdMotivo As Int32, ByVal pIdSeparVenta As Int32) As String
        cobranzaDetalle = Session("cobranzaDetalle")

        Dim LcobranzaDetalle = From pd In cobranzaDetalle _
                                Where pd.idSeparacionVenta = pIdSeparVenta AndAlso pd.idMotivo = pIdMotivo _
                                     AndAlso pd.idEstadoPago = 1 _
                                Order By pd.correlativo _
                                Select pd


        Dim monto As Decimal = 0
        Dim distribuir As EseparacionVentaDetallePagos = Nothing

        For Each sd As EseparacionVentaDetallePagos In LcobranzaDetalle
            distribuir = New EseparacionVentaDetallePagos
            With distribuir
                .idProyecto = Me.Master.idProyecto
                .idEtapa = Me.Master.idEtapa
                .idSeparacionVenta = sd.idSeparacionVenta
                .idSeparacionVentaPago = sd.idSeparacionVentaPago
                .tpoGestion = sd.tpoGestion
                .idEdificio = sd.idEdificio
                .idModelo = sd.idModelo
                .idUndInmob = 0
                .idTpoInmueble = 0
                .fchPago = sd.fchPago
                .idFormaPago = sd.idFormaPago
                .montoPago = sd.montoPago
                .idMoneda = sd.idMoneda
                .idTpoCambio = 0
                .conInteres = 0
                .tea = 0
                .tim = 0
                .correlativo = sd.correlativo
                .fchCancelacion = sd.fchCancelacion
                .idMotivo = sd.idMotivo
                If sd.idMotivo = 1 Then
                    .descMotivo = "CUOTA INICIAL"
                Else
                    .descMotivo = "SALDO FINANCIAR"
                End If
                .amortizacion = 0
                .interes = 0
                .cuota = sd.cuota
                .saldo = 0
                .idEstadoPago = 1
                .descEstadoPago = "PENDIENTE"
            End With
            distribuirs.Add(distribuir)
        Next

        Session("distribuirs") = distribuirs
        Return ""
    End Function
    Protected Function dividir(ByVal pIdMotivo As Int32, ByVal pIdSeparVenta As Int32, ByVal SaldoCta As Decimal, ByVal DividirCtaInic As Int32, ByVal FchInicioFormaPago As String) As String
        cobranzaDetalle = Session("cobranzaDetalle")

        Dim LcobranzaDetalle = From pd In cobranzaDetalle _
                                Where pd.idSeparacionVenta = pIdSeparVenta AndAlso pd.idMotivo = pIdMotivo _
                                     AndAlso pd.idEstadoPago = 1 _
                                Order By pd.correlativo _
                                Select pd


        Dim CuotaInicial = (From pd In cobranzaDetalle _
                                Where pd.idSeparacionVenta = pIdSeparVenta AndAlso pd.idMotivo = pIdMotivo _
                                     AndAlso pd.idEstadoPago = 1 _
                                Order By pd.correlativo _
                                Select pd.correlativo).Min()

        Dim monto As Decimal = CType(SaldoCta, Decimal)
        Dim nroCta As Int32 = CType(DividirCtaInic, Int32)
        Dim montoCta As Decimal = Math.Round(monto / CType(nroCta, Int32), 2)
        Dim distribuir As EseparacionVentaDetallePagos = Nothing
        For x = 0 To CType(nroCta, Int32) - 1
            distribuir = New EseparacionVentaDetallePagos
            With distribuir
                .idProyecto = Me.Master.idProyecto
                .idEtapa = Me.Master.idEtapa
                .idSeparacionVenta = LcobranzaDetalle.ElementAt(0).idSeparacionVenta
                .idSeparacionVentaPago = x + 1
                .tpoGestion = LcobranzaDetalle.ElementAt(0).tpoGestion
                .idEdificio = 0
                .idModelo = 0
                .idUndInmob = 0
                .idTpoInmueble = 0
                .fchPago = FchInicioFormaPago
                .idFormaPago = LcobranzaDetalle.ElementAt(0).idFormaPago
                .montoPago = monto
                .idMoneda = LcobranzaDetalle.ElementAt(0).idMoneda
                .idTpoCambio = 0
                .conInteres = 0
                .tea = 0
                .tim = 0
                .correlativo = x + CuotaInicial
                If x = 0 Then
                    .fchCancelacion = CType(FchInicioFormaPago, DateTime)
                Else
                    .fchCancelacion = CType(FchInicioFormaPago, DateTime).AddMonths(x)
                End If
                .idMotivo = pIdMotivo
                If pIdMotivo = 1 Then
                    .descMotivo = "CUOTA INICIAL"
                Else
                    .descMotivo = "SALDO FINANCIAR"
                End If
                .amortizacion = 0
                .interes = 0
                .cuota = montoCta
                .saldo = 0
                .idEstadoPago = 1
                .descEstadoPago = "PENDIENTE"
            End With
            distribuirs.Add(distribuir)
        Next
        Session("distribuirs") = distribuirs
        Dim sr As New System.IO.StringWriter()
        Dim htm As New HtmlTextWriter(sr)
        gvwDistribuir.DataSource = distribuirs
        gvwDistribuir.DataBind()
        gvwDistribuir.RenderControl(htm)
        htm.Flush()
        Return sr.ToString()
    End Function
    'MPE
    Protected Sub btnGenerarCuotas(ByVal Desde As Int32, ByVal Hasta As Int32, ByVal Monto As Decimal)
        Dim wMonto As Decimal

        distribuirs = Session("distribuirs")

        wMonto = 0
        For Each distribuir As EseparacionVentaDetallePagos In distribuirs
            If distribuir.correlativo >= Desde And distribuir.correlativo <= Hasta Then
                distribuir.cuota = Monto   '0
            End If
            wMonto = wMonto + distribuir.cuota
        Next

        Session("distribuirs") = distribuirs
        gvwDistribuir.DataSource = distribuirs
        gvwDistribuir.DataBind()
    End Sub

    Protected Sub gvwDistribuir_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvwDistribuir.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            'e.Row.Attributes.Add("OnClick", "CallTheServer('showDetCta@" + e.Row.RowIndex.ToString + "');")
            e.Row.Attributes.Add("OnClick", "CallTheServer('showDetCta@" + DataBinder.Eval(e.Row.DataItem, "correlativo").ToString + "');")
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
    Protected Sub afuFilesEscanerPagos_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles afuFilesEscanerPagos.UploadedComplete
        Dim strNomArchivo As String = e.filename
        Dim strExtension As String = strNomArchivo.Substring(strNomArchivo.LastIndexOf(".") + 1).ToLower.Trim
        If strNomArchivo.Trim.Length > 100 Then
            e.statusMessage = "El nombre del archivo no puede ser más de 100 caracteres."
            Exit Sub
        End If
        If afuFilesEscanerPagos.PostedFile Is Nothing Then
            e.statusMessage = " Debe seleccionar un archivo."
            Exit Sub
        End If
        If afuFilesEscanerPagos.PostedFile.ContentLength = 0 Then
            e.statusMessage = " No puede subir un archivo con peso cero(0)."
            Exit Sub
        End If
        If afuFilesEscanerPagos.PostedFile.ContentLength >= 1048576 Then
            e.statusMessage = " No puede subir un archivo mayor a 1 Mb."
            Exit Sub
        End If
        If Not (strExtension.Equals("jpg") OrElse strExtension.Equals("pdf") OrElse strExtension.Equals("gif")) Then
            e.statusMessage = " Solo puede subir archivos con extensión .jpg (JPG)| .pdf (PDF)| .gif(GIF)."
            Exit Sub
        End If
        Try
            Try
                Dim id As String() = Split(CType(txtIDFileLoad.Text.Trim, String), ",")
                Dim ruta As String = Server.MapPath("~/")
                If (CType(id(0), Int32).Equals(0)) Then
                    ruta += "gestionComercial\scanMontoSeparacion"
                Else
                    ruta += "cobranza\scanPagos"
                End If

                Dim vNomGenerado As String = generarNombre(CType(id(0), Int32), CType(id(1), Int32), CType(id(2), Int32))

                If hdFileOldScanner.Value <> vNomGenerado + "@" + Path.GetFileName(strNomArchivo) Then
                    If File.Exists(ruta + "\" + hdFileOldScanner.Value) Then
                        If (CType(id(0), Int32).Equals(0)) Then
                            File.Move(ruta + "\" + hdFileOldScanner.Value, ruta + "\oldSep\" + hdFileOldScanner.Value)
                        Else
                            File.Move(ruta + "\" + hdFileOldScanner.Value, ruta + "\old\" + hdFileOldScanner.Value)
                        End If
                    End If
                End If
                Dim fileScan As String = ruta + "\" + vNomGenerado + "@" + Path.GetFileName(strNomArchivo)
                afuFilesEscanerPagos.SaveAs(fileScan)
                If File.Exists(fileScan) Then
                    If (CType(id(0), Int32).Equals(0)) Then
                        Dim pago As New EseparacionVenta _
                        With { _
                            .idProyecto = Me.Master.idProyecto, _
                            .idEtapa = Me.Master.idEtapa, _
                            .idSeparacionVenta = CType(id(1), Int32), _
                            .rutaScannerSeparacion = vNomGenerado + "@" + Path.GetFileName(strNomArchivo).Trim, _
                            .idUsuario = Me.Master.idUsuario _
                        }
                        RseparacionVenta.EditarSeparacionPagoFileScan(Me.Master.descEmpresa, pago)
                    Else
                        Dim pago As New EseparacionVentaDetallePagos _
                        With { _
                            .idProyecto = Me.Master.idProyecto, _
                            .idEtapa = Me.Master.idEtapa, _
                            .idSeparacionVenta = CType(id(1), Int32), _
                            .idSeparacionVentaPago = CType(id(2), Int32), _
                            .rutaScanner = vNomGenerado + "@" + Path.GetFileName(strNomArchivo).Trim, _
                            .idUsuario = Me.Master.idUsuario _
                        }
                        RseparacionVentaDetallePagos.cobranzaDetallePagoFileScan(Me.Master.descEmpresa, pago)
                    End If
                End If
            Catch ex As Exception
                jsMensaje = "<script>javascript:alert(' No se pudo completar el proceso; intentelo nuevamente.');</script>)"
            End Try
        Catch ex As Exception
            jsMensaje = "<script>javascript:alert(' Sólo se permiten subir archivos de máximo 1 Mb.');</script>)"
        End Try
    End Sub
    Private Function generarNombre(ByVal idMotivo As String, ByVal idSeparacionVenta As String, ByVal idPago As String) As String
        If idMotivo = 0 Then
            Return Me.Master.descEmpresa.Trim + Me.Master.idProyecto.ToString + Me.Master.idEtapa.ToString + "Pago0_" + _
               Now.Day.ToString.PadLeft(2, "0") + _
               Now.Month.ToString.PadLeft(2, "0") + _
               Now.Year.ToString
        Else
            Return Me.Master.descEmpresa.Trim + Me.Master.idProyecto.ToString + Me.Master.idEtapa.ToString + "Pago" + idMotivo + idSeparacionVenta + idPago
        End If
    End Function
#End Region

#Region "           CallBack                                "
    Private _callbackArgument As String
    Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
        Return _callbackArgument
    End Function
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        Try
            If eventArgument <> String.Empty Then
                Dim varParams() As String = eventArgument.Split("@")
                Dim sr As New System.IO.StringWriter()
                Dim htm As New HtmlTextWriter(sr)
                _callbackArgument = ""
                Select Case varParams(0)
                    Case "divddlNroCta"
                        _callbackArgument = varParams(0).ToString + "|" + cargarCtaCorriente(CType(varParams(1), Int32))
                    Case "divBuscar"
                        Dim pVendedor As New Evendedor With _
                        { _
                         .idProyecto = Me.Master.idProyecto, _
                         .idEtapa = Me.Master.idEtapa, _
                         .idVendedor = CType(varParams(1), Int32) _
                         }
                        atencionClientes = Rcliente.SeleccionarFiltroAtencionClientexNombreApePaternoApeMaterno _
                                           (Me.Master.descEmpresa, False, CType(varParams(2).Trim, String), pVendedor)
                        Me.sCliente = Nothing
                        Me.sCliente = atencionClientes
                        Me.gvwCliente.DataSource = atencionClientes
                        Me.gvwCliente.DataBind()
                        Me.gvwCliente.RenderControl(htm)

                        htm.Flush()

                        _callbackArgument = "divgvwCliente|" + sr.ToString()
                    Case "showDet"
                        atencionClientes = Session("atencionClientes")
                        Dim wSr = obtenerEdit(From c In atencionClientes _
                                                                            Where c.idCliente = CType(varParams(1), Int32) _
                                                                            Select c _
                                                                            Order By c.idTpoPersona)

                        'MPE
                        Dim sr2 As New System.IO.StringWriter()
                        Dim htm2 As New HtmlTextWriter(sr2)
                        selSeparacion.DataSource = Session("cobranza")
                        selSeparacion.DataTextField = "detalle"
                        selSeparacion.DataValueField = "idSeparacionVenta"
                        selSeparacion.DataBind()
                        selSeparacion.RenderControl(htm2)
                        htm2.Flush()

                        _callbackArgument = "detalle|showDet|" + sr2.ToString + "|" + wSr

                    Case "pago"
                        cobranzaDetalle = Session("cobranzaDetalle")
                        Dim verificando = (From cb In cobranzaDetalle _
                                           Where cb.idMotivo = 1 AndAlso cb.idEstadoPago = 1 _
                                           Select cb.idMotivo).Count()

                        Dim arr As String() = Split(CType(varParams(1).Trim, String), ",")
                        Dim Lpago = From pd In cobranzaDetalle _
                                    Where pd.idSeparacionVenta = CType(arr(0), Int32) AndAlso _
                                          pd.idSeparacionVentaPago = CType(arr(1), Int32) _
                                    Select pd
                        _callbackArgument = "pago|pago|" + _
                                            CType(varParams(1).Trim, String) + "|" + _
                                            Lpago.ElementAt(0).idMotivo.ToString + "|" + _
                                            Lpago.ElementAt(0).fchPago + "|" + _
                                            Lpago.ElementAt(0).fchCancelacion + "|" + _
                                            Lpago.ElementAt(0).cuota.ToString("###,##0.00") + "|" + _
                                            Lpago.ElementAt(0).idMoneda.ToString + "|" + _
                                            Lpago.ElementAt(0).idFormaPago.ToString + "|" + _
                                            Lpago.ElementAt(0).nroDocumento + "|" + _
                                            Lpago.ElementAt(0).idEntidadFin.ToString + "|" + _
                                            cargarCtaCorriente(Lpago.ElementAt(0).idEntidadFin) + "|" + _
                                            Lpago.ElementAt(0).nroCuenta.Trim + "|" + _
                                            Lpago.ElementAt(0).vouchet.Trim() + "|" + _
                                            Lpago.ElementAt(0).rutaScanner.Trim() + "|" + _
                                            Lpago.ElementAt(0).idEstadoPago.ToString + "|" + _
                                            verificando.ToString()
                    Case "guardar"
                        Dim ID As String = CType(varParams(1), String)
                        If ID.Trim.Length > 0 Then
                            Dim arr As String() = Split(ID.Trim, ",")
                            Dim pago As New EseparacionVentaDetallePagos _
                                With { _
                                    .idProyecto = Me.Master.idProyecto, _
                                    .idEtapa = Me.Master.idEtapa, _
                                    .idSeparacionVenta = CType(arr(0), Int32), _
                                    .idSeparacionVentaPago = CType(arr(1), Int32), _
                                    .fchCancelacion = CType(varParams(2), String).Trim, _
                                    .idMoneda = CType(varParams(3), Int32), _
                                    .idFormaPago = CType(varParams(4), Int32), _
                                    .nroDocumento = CType(varParams(5), String).Trim, _
                                    .idEntidadFin = CType(varParams(6), Int32), _
                                    .idCuenta = CType(varParams(7), Int32), _
                                    .nroCuenta = CType(varParams(8), String).Trim, _
                                    .rutaScanner = "", _
                                    .vouchet = CType(varParams(9), String).Trim, _
                                    .idEstadoPago = 2, _
                                    .idUsuario = Me.Master.idUsuario _
                                }
                            If RseparacionVentaDetallePagos.cobranzaDetallePagoEdit(Me.Master.descEmpresa, pago).ToString() Then
                                _callbackArgument = "guardar|guardar|True|" + cargarPagos(CType(varParams(10), String).Trim)
                            Else
                                _callbackArgument = "guardar|guardar|False"
                            End If
                        End If
                    Case "upDetalle"
                        _callbackArgument = "guardar|guardar|True|" + cargarPagos(CType(varParams(1), String).Trim)

                    Case "CambiarMontos"
                        Dim pIdMotivo As Int32 = CType(varParams(1), Int32)
                        Dim pIdSeparacionVenta As Int32 = CType(varParams(2), Int32)
                        cobranzaDetalle = Session("cobranzaDetalle")
                        cobranzas = Session("cobranza")

                        '*** CALCULA DATOS DE LA SEPARACION VENTA 
                        Dim pSeparacionVenta As New EseparacionVenta
                        With pSeparacionVenta
                            .idProyecto = Me.Master.idProyecto
                            .idEtapa = Me.Master.idEtapa
                            .idSeparacionVenta = pIdSeparacionVenta
                        End With

                        Dim SeparacionVenta As New List(Of EseparacionVenta)
                        SeparacionVenta = RseparacionVenta.FiltrarSeparacionxId(Me.Master.descEmpresa, pSeparacionVenta)

                        Dim TotalCtaInicial = (From cb In SeparacionVenta _
                                     Select cb.ctaInicial).Single()

                        Dim wTotalSeparacion = (From cb In SeparacionVenta _
                                     Select cb.totalSeparacion).Single()


                        Dim TotalFinanciamiento = (From cb In SeparacionVenta _
                                     Select cb.financiamiento).Single()

                        '**** CALCULA EL MONTO TOTAL DE LOS INMUEBLES ***

                        Dim SeparacionVentaDetalle As New List(Of EseparacionVentaDetalle)
                        SeparacionVentaDetalle = RseparacionVentaDetalle.Filtrar(Me.Master.descEmpresa, pSeparacionVenta)

                        Dim TotalPrecioVenta = (From cb In SeparacionVentaDetalle _
                             Select cb.valorVenta).Sum()



                        '*** CALCULA DATOS DE LA SEPARACION VENTA DETALLE)

                        Dim PendienteInicial = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = 1 AndAlso cb.idEstadoPago = 1 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()

                        Dim CanceladoInicial = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = 1 AndAlso cb.idEstadoPago = 2 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()

                        Dim PendienteFinanciamiento = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = 2 AndAlso cb.idEstadoPago = 1 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()

                        Dim CanceladoFinanciamiento = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = 2 AndAlso cb.idEstadoPago = 2 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()


                        Dim Montos = TotalPrecioVenta.ToString("###,##0.00") + "@" + wTotalSeparacion.ToString("###,##0.00") + "@" + TotalCtaInicial.ToString("###,##0.00") + "@" + _
                                     TotalFinanciamiento.ToString("###,##0.00") + "@" + PendienteInicial.ToString("###,##0.00") + "@" + CanceladoInicial.ToString("###,##0.00") + "@" + _
                                     PendienteFinanciamiento.ToString("###,##0.00") + "@" + CanceladoFinanciamiento.ToString("###,##0.00")

                        _callbackArgument = "CambiarMontos|CambiarMontos|" + pIdSeparacionVenta.ToString() + "|" + Montos

                    Case "distribuir"
                        Dim pIdMotivo As Int32 = CType(varParams(1), Int32)
                        Dim pIdSeparacionVenta As Int32 = CType(varParams(2), Int32)
                        cobranzaDetalle = Session("cobranzaDetalle")
                        cobranzas = Session("cobranza")

                        '*** CALCULA DATOS DE LA SEPARACION VENTA DETALLE)
                        Dim idCorrelativo As Int32 = 0
                        Dim fecha As Date
                        Dim nroCta As Int32 = 0

                        idCorrelativo = (From cb In cobranzaDetalle _
                                                 Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 _
                                                 AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                                 Select cb.correlativo).Min()
                        fecha = (From cb In cobranzaDetalle _
                                     Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 AndAlso cb.correlativo = idCorrelativo _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                     Select cb.fchCancelacion).Single()
                        nroCta = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.idMotivo).Count()

                        Dim MontoCuotas = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()


                        'Define tira Montos

                        Dim Montos = MontoCuotas.ToString("###,##0.00")

                        Dim x = CargarDistribuirs(pIdMotivo, pIdSeparacionVenta)

                        gvwDistribuir.DataSource = From cb In cobranzaDetalle _
                                                       Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 _
                                                        AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                                       Order By cb.correlativo _
                                                       Select cb.correlativo, cb.fchCancelacion, cb.descMotivo, cb.cuota, cb.descEstadoPago
                        gvwDistribuir.DataBind()
                        gvwDistribuir.RenderControl(htm)
                        htm.Flush()

                        _callbackArgument = "distribuir|distribuir|" + pIdSeparacionVenta.ToString() + "|" + pIdMotivo.ToString() + "|" + fecha.ToString("dd/MM/yyyy") + "|" + Montos + "|" + nroCta.ToString() + "|" + sr.ToString()

                    Case "dividir"
                        Dim pIdMotivo As Int32 = CType(varParams(1), Int32)
                        Dim pIdSeparacionVenta As Int32 = CType(varParams(2), Int32)
                        Dim wDividir = dividir(pIdMotivo, pIdSeparacionVenta, CType(varParams(3), Decimal), CType(varParams(4), Int32), CType(varParams(5), String))

                        Dim monto = (From cb In distribuirs _
                                     Select cb.cuota).Sum()

                        _callbackArgument = "dividir|dividir|" + monto.ToString("###,#00.00") + "|" + wDividir

                    Case "saveDistribuir"
                        Dim pCobranza As New EseparacionVentaDetallePagos _
                        With { _
                        .idProyecto = Me.Master.idProyecto, _
                        .idEtapa = Me.Master.idEtapa, _
                        .idSeparacionVenta = CType(varParams(2), Int32), _
                        .idMotivo = CType(varParams(3), Int32), _
                        .idEstadoPago = 1 _
                        }

                        distribuirs = Session("distribuirs")

                        Dim totalCuotas As Decimal = 0
                        For Each cuota As EseparacionVentaDetallePagos In distribuirs
                            totalCuotas += cuota.cuota
                        Next

                        For Each cuota As EseparacionVentaDetallePagos In distribuirs
                            cuota.montoPago = totalCuotas
                        Next


                        If Ccobranza.distribuirPagos(Me.Master.descEmpresa, pCobranza, distribuirs) Then
                            _callbackArgument = "saveDistribuir|saveDistribuir|True|" + cargarPagos(CType(varParams(1), String).Trim)
                        Else
                            _callbackArgument = "saveDistribuir|saveDistribuir|False"
                        End If
                    Case "showDetCta"
                        Dim id As Int32 = CType(varParams(1), Int32)
                        distribuirs = Session("distribuirs")
                        Dim Lcuota = From v In distribuirs _
                                     Where v.correlativo.ToString = id _
                                     Select v
                        _callbackArgument = "showDetCta|showDetCta|" + id.ToString + "|" + Lcuota.ElementAt(0).fchCancelacion + "|" + Lcuota.ElementAt(0).cuota.ToString

                    Case "GrabarCuotaDetalle"
                        distribuirs = Session("distribuirs")
                        Dim IdCuotaDetalle = varParams(1)
                        Dim FechaCuotaDetalle = varParams(2)
                        Dim MontoCuotaDetalle = varParams(3)
                        Dim pIdMotivo = varParams(4)

                        distribuirs = Session("distribuirs")
                        Dim Lcuota = From v In distribuirs _
                                     Where v.correlativo = CType(IdCuotaDetalle, Int32) _
                                     Select v

                        Lcuota.ElementAt(0).fchCancelacion = FechaCuotaDetalle
                        Lcuota.ElementAt(0).cuota = CType(MontoCuotaDetalle, Decimal)
                        Session("distribuirs") = distribuirs
                        gvwDistribuir.DataSource = distribuirs
                        gvwDistribuir.DataBind()
                        gvwDistribuir.RenderControl(htm)
                        htm.Flush()

                        Dim totalPendiente As Decimal = 0
                        For Each cuota As EseparacionVentaDetallePagos In distribuirs
                            If cuota.idEstadoPago = 1 Then
                                totalPendiente += cuota.cuota
                            End If
                        Next

                        _callbackArgument = "GrabarCuotaDetalle|GrabarCuotaDetalle|" + totalPendiente.ToString("#,###,##0.00") + "|" + sr.ToString()

                    Case "GrabaMontos"

                        Dim nroDocumento = varParams(4)

                        Dim pSeparacionVenta As New EseparacionVenta _
                        With { _
                        .idProyecto = Me.Master.idProyecto, _
                        .idEtapa = Me.Master.idEtapa, _
                        .idSeparacionVenta = CType(varParams(1), Int32), _
                        .totalSeparacion = 0, _
                        .ctaInicial = CType(varParams(2), Decimal), _
                        .financiamiento = CType(varParams(3), Decimal) _
                        }

                        If RseparacionVenta.SeparacionActualizarMontos(Me.Master.descEmpresa, pSeparacionVenta).ToString() Then
                            _callbackArgument = "GrabaMontos|GrabaMontos|True|" + cargarPagos(CType(nroDocumento, String).Trim)
                        Else
                            _callbackArgument = "GrabaMontos|GrabaMontos|False"
                        End If

                    Case "ShowInsertarCuota"

                        Dim CorrelativoMin As Int32
                        Dim CorrelativoMax As Int32

                        distribuirs = Session("distribuirs")

                        CorrelativoMin = (From cb In distribuirs _
                                    Select cb.correlativo).Min()

                        CorrelativoMax = (From cb In distribuirs _
                                     Select cb.correlativo).Max()

                        _callbackArgument = "ShowInsertarCuota|ShowInsertarCuota|" + CorrelativoMin.ToString + "|" + CorrelativoMax.ToString

                    Case "GrabaInsertarCuota"

                        Dim pCorrelativo = CType(varParams(1), Int32)
                        Dim pFechaCuota = varParams(2)
                        Dim pMontoCuota = CType(varParams(3), Decimal)

                        distribuirs = Session("distribuirs")

                        Dim distribuir As EseparacionVentaDetallePagos = Nothing
                        Dim distribuirs2 As New List(Of EseparacionVentaDetallePagos)


                        For Each cuota As EseparacionVentaDetallePagos In distribuirs
                            If cuota.correlativo = pCorrelativo Then
                                distribuirs2.Add(cuota)
                                Dim cuota2 As New EseparacionVentaDetallePagos
                                With cuota2
                                    .idProyecto = Me.Master.idProyecto
                                    .idEtapa = Me.Master.idEtapa
                                    .idSeparacionVenta = cuota.idSeparacionVenta
                                    .idSeparacionVentaPago = cuota.idSeparacionVentaPago
                                    .tpoGestion = cuota.tpoGestion
                                    .idEdificio = cuota.idEdificio
                                    .idModelo = cuota.idModelo
                                    .idUndInmob = 0
                                    .idTpoInmueble = 0
                                    .fchPago = cuota.fchPago
                                    .idFormaPago = cuota.idFormaPago
                                    .montoPago = cuota.montoPago
                                    .idMoneda = cuota.idMoneda
                                    .idTpoCambio = 0
                                    .conInteres = 0
                                    .tea = 0
                                    .tim = 0
                                    .correlativo = pCorrelativo + 1
                                    .fchCancelacion = pFechaCuota
                                    .idMotivo = cuota.idMotivo
                                    If cuota.idMotivo = 1 Then
                                        .descMotivo = "CUOTA INICIAL"
                                    Else
                                        .descMotivo = "SALDO FINANCIAR"
                                    End If
                                    .amortizacion = 0
                                    .interes = 0
                                    .cuota = pMontoCuota
                                    .saldo = 0
                                    .idEstadoPago = 1
                                    .descEstadoPago = "PENDIENTE"
                                End With
                                distribuirs2.Add(cuota2)
                            ElseIf cuota.correlativo > pCorrelativo Then
                                cuota.correlativo = cuota.correlativo + 1
                            End If
                            If cuota.correlativo <> pCorrelativo Then
                                distribuirs2.Add(cuota)
                            End If
                        Next

                        Session("distribuirs") = distribuirs2

                        gvwDistribuir.DataSource = distribuirs2
                        gvwDistribuir.DataBind()
                        gvwDistribuir.RenderControl(htm)
                        htm.Flush()

                        Dim totalPendiente As Decimal = 0
                        For Each cuota As EseparacionVentaDetallePagos In distribuirs2
                            If cuota.idEstadoPago = 1 Then
                                totalPendiente += cuota.cuota
                            End If
                        Next
                        _callbackArgument = "GrabaInsertarCuota|GrabaInsertarCuota|" + totalPendiente.ToString("#,###,##0.00") + "|" + sr.ToString()

                        '///MPE
                    Case "generarCuotas"
                        btnGenerarCuotas(CType(varParams(1), Int32), _
                                             CType(varParams(2), Int32), CType(varParams(3), Decimal))

                        gvwDistribuir.RenderControl(htm)
                        htm.Flush()

                        distribuirs = Session("distribuirs")
                        Dim totalPendiente As Decimal = 0
                        For Each cuota As EseparacionVentaDetallePagos In distribuirs
                            If cuota.idEstadoPago = 1 Then
                                totalPendiente += cuota.cuota
                            End If
                        Next
                        _callbackArgument = "generarCuotas|generarCuotas|" + totalPendiente.ToString("#,###,##0.00") + "|" + sr.ToString()


                End Select
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
#End Region

End Class